feat(scanner): Multi-language repository scanner with 94.47% test coverage#13
Merged
Conversation
…arkdown support - Add scanner type definitions and interfaces - Implement TypeScriptScanner using ts-morph for deep AST analysis - Implement MarkdownScanner using remark for documentation - Create ScannerRegistry for managing multiple language scanners - Add comprehensive tests (all passing) - Fix pre-commit hook to use correct Biome syntax Features: - TypeScript: extracts functions, classes, methods, interfaces with type info - Markdown: extracts documentation sections with headings - Pluggable architecture: easy to add more language scanners - Tested on dev-agent codebase itself Issue: #3
…exclusions Coverage improvements: - Overall scanner package: 88.02% → 94.47% (+6.45%) - Registry: 68.42% → 100% (+31.58% - perfect coverage!) - Tests: 8 → 24 tests (tripled) New test coverage: - Scanner error handling and recovery - Language-specific scanner retrieval - Auto glob pattern building - Default exclusions verification - Mixed language repositories - Method extraction from classes - Case-insensitive file extensions Best practice exclusions (industry standards): - Dependencies: node_modules, vendor, bower_components, third_party - Build artifacts: dist, build, out, target, .next, .turbo - Version control: .git, .svn, .hg - IDE/Editor: .vscode, .idea, .vs, .fleet - Caches: .cache, .parcel-cache, .eslintcache - Test coverage: coverage, .nyc_output - Lock files: package-lock.json, yarn.lock, pnpm-lock.yaml - Analysis/reports: analysis-reports, .research, benchmarks - Test fixtures: __fixtures__, __snapshots__ Improvements: - Case-insensitive file extension handling - Comprehensive default exclusion patterns - Better error handling documentation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Issue #3: Multi-language repository scanner with TypeScript and Markdown support.
🎯 Test Coverage
Overall Scanner Package: 94.47% statement coverage
What's Implemented
Core Scanner Architecture
TypeScript Scanner (ts-morph)
Markdown Scanner (remark)
Smart Exclusions (Industry Best Practices)
Automatically excludes non-source files:
Documentation
Testing
24 comprehensive tests covering:
Technical Details
Dependencies added:
ts-morph: Enhanced TypeScript AST analysisremark: Markdown parsingglobby: File glob matchingunified: Text processing frameworkFiles created:
types.ts: Scanner interfaces and types (~80 lines)typescript.ts: TypeScript scanner implementation (~320 lines)markdown.ts: Markdown scanner implementation (~150 lines)registry.ts: Scanner management and orchestration (~220 lines)scanner.test.ts: Comprehensive test suite (24 tests, ~360 lines)README.md: Full documentation with examples (~500 lines)Code quality:
Example Output
Performance
Typical metrics (measured on dev-agent codebase):
Next Steps
After this PR:
Related
Closes #3